package dao.hero;


public class Zhiguo extends BaseHero {
	private int num;
	private double mydef;
	private int hurry;
	private boolean skill2flag;
	private boolean skill3flag;
	private boolean skill3flag2=false;
	private boolean skill4flag=false;
	public Zhiguo()
    {
       this.name="志国";
       this.ID = 1340;
       this.HP = 1150;
       this.maxHP=HP;
       this.ATT = 87;      
       this.DEF = 36;     
       this.DEX = 67;   
       this.blue = 255;
       this.sname1 = "普通攻击";
       this.sname2 = "蓄力劈";
       this.sname3 = "金刚护体";
       this.sname4 = "巨人觉醒";
       this.describe_skill1 = "技能详解：普通攻击，造成一定的物理伤害";
       this.describe_skill2 = "技能详解：耗蓝35，蓄力一回合，下回合再次使用本技能造成大量伤害，攻击力越高伤害越高";
       this.describe_skill3 = "技能详解：耗蓝30，金刚护体，短时内获得钢铁般的体质，下一回合可以抵御90%的物理伤害，被动当血量低于30%，防御加8";
       this.describe_skill4 = "技能详解：耗蓝90，觉醒后获得巨人之力，（血量低于25%可以使用），血量回复最大血量的10%，攻击力上升100%";
       this.describe_hero = "人物介绍：表面憨厚内心却无比风骚，好像具有不错的潜能，英雄定位为高血高防，肉盾型英雄";
       this.myluck= "一般";
       num=99;
       headpath="image\\"+"zghead.png";
       bodypath="image\\"+"zgbody.png";
       //head=Toolkit.getDefaultToolkit().getImage("image\\"+"xlhead.jpg");
}
	public void attack(int skill, BaseHero enemy) {
		// TODO Auto-generated method stub
		if(skill3flag){//考虑移动速度，未解决，若敏捷比敌人快则有问题，不过默认志国敏捷最慢，所以暂时不会有事
			setDEF(mydef);//恢复防御力
			skill3flag=false;
		}
		
		if(skill==1){
			skill1(enemy);
		}else if(skill==2){
			skill2(enemy);
		}else if(skill==3){
			skill3(enemy);
		}else if(skill==4){
			skill4(enemy);
		}
		blue+=15;
		if(HP<maxHP*0.3 && !skill3flag2){
			tip+=",触发被动技能，防御力格外加8";
			setDEF(DEF+8);//当血量低于30%，血量加8，考虑只加一次
			skill3flag2=true;
		}
	}


	public void skill1(BaseHero enemy) {
		// TODO Auto-generated method stub
		blood=true;//掉血
		BaseHero.luck=(int)(Math.random()*10);//运气值随机数
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((BaseHero.luck<2||isDodge(enemy))&&!noDodge){
			tip="普通攻击,"+enemy.getName()+"运气太好了，闪开了这次攻击";
		}else if(BaseHero.luck>7){
			enemy.setHP(enemy.getHP()-(ATT*2+BaseHero.luck*5)*(1-enemy.getDEF()/100));
			tip=name+"状态不错，使出了会心一击，造成"+enemy.getName()+(int)(enemy.getLastHP()-enemy.getHP())+"伤害";
		}else {
			enemy.setHP(enemy.getHP()-(this.ATT+BaseHero.luck*4)*(1-enemy.getDEF()/100));
			tip=name+"普通攻击，造成"+enemy.getName()+(int)(enemy.getLastHP()-enemy.getHP())+"伤害";
		}
	}

	public void skill2(BaseHero enemy) {
		// TODO 耗蓝25，蓄力一回合，下回合再次使用本技能造成大量伤害（攻击力（2-3）倍）
		blood=true;//掉血
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((blue-35)>=0){
			if(!skill2flag){//第一次使用此技能
				tip="嗷嗷嗷，蓄力中！！！";
				skill2flag=true;
				blue -= 35;
			}else{
				if(!noDodge&&isDodge(enemy)){
					//闪避了
					tip="蓄力劈,"+enemy.getName()+"太敏捷了，竟然闪开了这次攻击";
				}else{//没有闪避
					
					BaseHero.luck=(int)(Math.random()*2)+2;//运气值随机数
					hurry=(int) (ATT*BaseHero.luck*(1-enemy.getDEF()/100));
					enemy.setHP(enemy.getHP()-hurry);
					tip=name+"使出威力无穷的蓄力劈，造成"+hurry+"伤害";
					
					
				}
				skill2flag=false;//使用完了，重新蓄力
				blue-=35;
			}
			
		}else {
			skill1(enemy);
		}
	}

	public void skill3(BaseHero enemy) {
		// TODO 金刚护体，短时内获得钢铁般的体质，下一回合可以抵御90%的物理伤害，被动当血量低于30%，防御加8
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((blue-30)>=0){
			mydef= getDEF();//保存原防御力
			setDEF(90);
			skill3flag=true;//标志
			tip=name+"使用金刚护体，短时内获得钢铁般的体质，下回合抵御90%的物理伤害";
			blue-=30;
		}else{
			skill1(enemy);
		}
		
	}

	public void skill4(BaseHero enemy) {
		// TODO 耗蓝90，觉醒后获得巨人之力，（血量低于25%可以使用），血量回复最大血量的12%，攻击力上升100%
		enemy.setLastHP(enemy.getHP());//重置上一次血量
		if((blue-90)>=0 && HP<maxHP*0.2 && !skill4flag){//考虑血量低于20%
			setHP(HP+maxHP*0.12);
			setATT(ATT*2);
			tip=name+"觉醒了，获得巨人之力，好恐怖！！攻击力上升100%，同时回复血量"+maxHP*0.12+"，当前攻击力为"+getATT();
			blue-=90;
			skill4flag=true;//表示已使用过此技能，无法重复使用
		}else{
			skill1(enemy);
		}
		
	}
	public boolean isDodge(BaseHero enemy){
		//当前敏捷比敌人高，增加闪避率,否则降低闪避率
		double dodge=enemy.getDEX()*0.3+(enemy.getDEX()-DEX)*0.25;
		System.out.println("当前闪避率"+dodge);
		int rand=(int)(Math.random()*100);//运气值随机数
		if(rand<dodge){
			System.out.println("闪避了"+rand);
			return true;
		}else{
			System.out.println("闪不开"+rand);
			return false;
		}    
	}
}